package com.lmabbe.common.global.context;

import com.lmabbe.common.global.context.session.LoginUser;
import com.lmabbe.common.global.enums.ClientTypeEnum;

/**
 * 登录用户
 *
 * @author lmabbe
 */
public interface LmabbeSessionUser {


    /**
     * 获取用户ID
     *
     * @return {@link String}
     * @date 2021/12/6 2:26 下午
     * @author liming
     */
    default Long getUserId() {
        return loginUser().getUserId();
    }


    /**
     * 获取租户ID
     *
     * @return {@link null}
     * @date 2021/12/6 2:26 下午
     * @author liming
     */
    Long getTenantId();


    /**
     * 获取用户登录的Token
     *
     * @return {@link String}
     * @date 2021/12/6 2:28 下午
     * @author liming
     */
    String token();


    /**
     * 获取用户登录的客户端类型
     *
     * @return {@link String}
     * @date 2021/12/6 2:29 下午
     * @author liming
     */
    ClientTypeEnum clientType();


    /**
     * 登录的用户
     *
     * @return {@link LoginUser}
     * @date 2021/12/9 22:28
     * @author liming
     */
    LoginUser loginUser();
}
